#!/usr/bin/env python
import os
import jinja2
import modules.Warehouse
from modules.Warehouse import box
from modules.Warehouse import Warehouse 
from modules.Predef import Predef as PRE

class Main:
        
    ####################################################
    # Initialize
    ####################################################
    def __init__(self,request, response):
        self.request=request
        self.response=response
        self.message=''
        self.errmessage=''
        self.Ware=None

        self.door=self.request.get('doorplate')


    ####################################################
    # For message
    ####################################################
    def MESSAGE(self,m):
        self.message=PRE.genMessage(self.message,m)

    def ERRMESSAGE(self,m):
        self.errmessage=PRE.genMessage(self.errmessage,"ERROR:"+m)

    ####################################################
    # Show the content
    ####################################################
    def getContent(self, t):
        temp_path=os.path.join(
                os.path.dirname(__file__),
                "../templates/")

        temp=jinja2.Environment(loader=jinja2.FileSystemLoader(temp_path)).get_template(t)

        if self.Ware is None:
            return temp.render(
                    {
                        'doors':PRE.doors
                        })
        else:
            return temp.render(
                    {
                        'list':self.Ware.List(),
                        'doorplate':self.door,
                        'e':self.errmessage,
                        'm':self.message,
                        })

    ####################################################
    # Read and Check settings to GET
    ####################################################
    def doGet(self):
        if self.door == '':
            self.response.out.write(self.getContent('main.html'))
        else:
            self.Ware=Warehouse(self.door)
            self.response.out.write(self.getContent('door.html'))

    ####################################################
    # Read and Check settings to POST
    ####################################################
    def doPost(self):
        if self.door == '':
            self.response.out.write(self.getContent('main.html'))
        else:
            self.Ware=Warehouse(self.door)

            for k in self.Ware.List():
                if self.request.get('hidden_'+k) == 'Deleted':
                    self.Ware.DESTROY(k)
                    self.MESSAGE('Success: "{}" has been deleted!'.format(k))

            label=self.request.get('newlabel')

            if (label!='') and (self.Ware.ISEXIST(label)):
                self.ERRMESSAGE('"{}" has existed in current list'.format(label))

            elif (label!=''):
                dummy=box(label)
                if self.Ware.CHECKIN(label, dummy.export()):
                    self.MESSAGE('Success: "{}" has been created!'.format(label))

            self.response.out.write(self.getContent('door.html'))


